package persistencia;

import infraestrutura.MyPlanException;

import java.sql.SQLException;
import java.util.*;

import javax.swing.table.*;

import dominio.Atividade;
import dominio.Usuario;

public class AtividadesTableModel extends AbstractTableModel {

	private ArrayList<Object> atividades = new ArrayList<>();
	private String[] colunas = { "Atividade", "Titulo", "Data", "Prioridades" };
	private Usuario usuario;
	private AtividadeDAO busca = AtividadeDAO.getInstance();

	public AtividadesTableModel(final Usuario usuario) throws SQLException,
			MyPlanException {
		this.usuario = usuario;
		this.colunas = colunas;
		loadTable();
	}

	// chamar toda vez que precisar atualizar os dados da tabela
	public void loadTable() throws SQLException, MyPlanException {
		atividades.clear(); // limpa o array para receber novos dados

		// System.out.println(busca.listarAtividades(pessoa).size());
		for (Atividade ativ : busca.listarAtividades(usuario)) {
			Object[] linha = new Object[colunas.length];
			linha[0] = ativ.getId_atividade();
			linha[1] = ativ.getTitulo();
			linha[2] = ativ.getData();
			linha[3] = ativ.getPrioridade();
			atividades.add(linha);
		}

	}

	@Override
	public Object getValueAt(int row, int col) {
		return ((Object[]) atividades.get(row))[col];
	}

	@Override
	public int getColumnCount() {
		return colunas.length; // Atividade, Data e Prioridade
	}

	@Override
	public String getColumnName(int col) {
		return colunas[col].toString();
	}

	@Override
	public Class getColumnClass(int col) {
		return getValueAt(0, col).getClass();
	}

	@Override
	public int getRowCount() {
		return atividades.size(); // Quantas linhas podem ser desenhadas =
									// quantas atividades registradas
	}

	/** nao permite ao usuario alterar os dados das tabelas */
	public boolean isCellEditable() {
		return false;
	}

}